Jerry's Log

Database Trigger

contents

1. 데이터베이스 트리거란?

트리거(Trigger) 는 데이터베이스 서버에서 특정 이벤트가 발생할 때 자동으로 실행되는 특수한 형태의 스토어드 프로시저입니다. 일반적인 프로시저와 달리 사용자가 수동으로 호출(CALL)할 수 없으며, 데이터베이스가 알아서 실행합니다.


2. 일반적인 사용 사례 (좋은 점)

A. 감사 추적 (Audit Trails/Logging)

Users 테이블의 정보가 변경될 때, 변경 전 값을 Users_History 테이블에 저장하고 싶을 때 사용합니다.

B. 복잡한 유효성 검사

직원의 급여가 매니저의 급여보다 높을 수 없도록 강제하고 싶을 때.

C. 자동 계산

OrderDetails에 상품이 추가되면, 자동으로 Orders 테이블의 total_price를 업데이트.


3. 왜 트리거가 "위험"한가? (나쁜 점)

많은 데이터베이스 아키텍트들이 운영 환경(Production)에서의 트리거 사용을 금지합니다. 이유는 다음과 같습니다.

A. 보이지 않는 로직 ("마법"의 문제)

가장 큰 문제입니다.

B. 연쇄 반응 (Cascading Triggers)

C. 조용한 성능 살인마

D. 벤더 종속성

스토어드 프로시저와 마찬가지로 문법이 독자적입니다. Oracle에서 Postgres로 이전하려면 모든 트리거를 다시 짜야 합니다.

references